package service;

import java.sql.Date;
import java.util.List;

import BarCodeAndBookDao.BarCodeAndBookDao;
import BarCodeAndBookDao.BarCodeAndBookImpl;
import bookDao.BookDao;
import bookDao.BookImpl;
import borrowingInformationDao.BorrowingInformationDao;
import borrowingInformationDao.BorrowingInformationImpl;
import borrowingquantityDao.BorrowingquantityDao;
import borrowingquantityDao.BorrowingquantityImpl;
import table.BarCodeAndBook;
import table.Book;
import table.BorrowingInformation;
import table.BorrowingInformationAll;
import table.Borrowingquantity;
import table.User;
import userDao.UserDao;
import userDao.UserImpl;

public class Librarian { 
	UserDao librarian = new UserImpl();
	BookDao book1 = new BookImpl();
	BarCodeAndBookDao barCode = new BarCodeAndBookImpl();
	BorrowingInformationDao borrowingImformation = new BorrowingInformationImpl();
	BorrowingquantityDao borrowingQuantity = new BorrowingquantityImpl();
	/**
	 * @return
	 * 图书管理员 图书借阅界面 输入用户的用户名 查询用户的姓名和性别
	 */
	public List<User> borrowInformation(int x){
		return librarian.get4(x);
	}
	/**
	 * @param x
	 * @return
	 * 图书管理员 图书借阅界面 输入图书的ISBN 查询图书的信息
	 */
	public List<BarCodeAndBook> getBookByBarCode(int x) {
		return barCode.getBookByBarCode(x);
	}
	/**
	 * 图书管理员 图书的归还
	 *通过图书唯一的编号 将图书借阅信息表中 相应数据删除
	 */
	public void returnBook(int x) {
		borrowingImformation.delete(x);
	}
	/**
	 * 图书管理员 借阅查询 
	 * @return
	 */
	public List<BorrowingInformationAll> borrowQuery(String x) {
		return borrowingImformation.findAll(x);
	}
	//所有用户 图书查询 通过索书号、书名、作者
	public List<Book> get1(String x,String y){
		return book1.get1(x,y);		
	}
	public List<Book> get2(String x,String z){
		return book1.get2(x,z);
	}
	public List<Book> get3(String y,String z){
		return book1.get3(y,z);	
	}
	public List<Book> get4(String x,String y,String z){
		return book1.get4(x,y,z);	
	}
	public List<Book> get5(String x) {
		return book1.get5(x); 
	}
	public List<Book> get6(String y) {
		return book1.get6(y);
	}
	public List<Book> get7(String z) {
		return book1.get7(z);
	}
	//图书管理员 图书信息的维护：对图书的增删改查
	public void save(Book x) {
		book1.save(x); 
	}
	/**
	 * 通过图书编号删除相应的图书 通过id删book表的相关信息 通过isbn号删除bookbarcode的信息
	 * @param x
	 */
	public void delete(int x,String y) {
		book1.delete(x,y);
	}
	/**
	 * 判断给书是否存在被借出的情况 是则无法删除信息
	 * @param x
	 * @return
	 */
	public boolean findBookStatus(String x) {
		return barCode.findBookStatus(x);
	}
	public void update(Book x) {
		book1.update(x);
	}
	//图书管理员 图书借阅
	public List<Borrowingquantity> find(String x){
		return borrowingQuantity.find(x);
	}
	//判断借阅信息表是否有该用户、图书编号来判断能否借阅
	public boolean isBorrowingInformation(int y) {
		return borrowingImformation.isBorrowingInformation( y);
	}
	//添加一条用户借阅数量的信息
	public void save(Borrowingquantity x) {
		borrowingQuantity.save(x);
	}
	/**
	 * 修改图书状态
	 * @param x为图书状态
	 * @param y图书唯一的编号
	 */
	public void updateBookStatus(String x, int y) {
		barCode.updateBookStatus(x, y);
	}
	/**
	 * 借此判断用户的可借数量
	 * @return
	 */
	public int findBorrowingTime(String x) {
		return borrowingImformation.findBorrowingTime(x);
	}
	/**
	 * 修改用户的可借数量和已借数量
	 * @param x
	 * @param y
	 * @param z
	 */
	public void updateBorrowingQuantity(String x ,int y, int z) {
		borrowingQuantity.upate(x, y, z);
	}
	public void saveBorrowingInformation(BorrowingInformation x) {
		borrowingImformation.save(x);
	}
	public void deleteBookBorrowingInformation(int x) {
		borrowingImformation.delete(x);
	}
	public int findNumberOfDate(String x) {
		return borrowingQuantity.findNumberOfDate(x);
	}
	public List<Book> find(){
		return book1.find();
	}
	//拿到id用于图书的修改和删除
	public int getBookId(String x) {
		return book1.getBookId(x);
	}
	/**
	 * 图书管理员 续借 x是图书编码 y是续借后的还书时间
	 */
	public void renew(int x,Date y) {
		borrowingImformation.renew(x,y);
	}
	/**
	 * @param x 为图书编码 获取其应该还书时间
	 * @return
	 */
	public  List<BorrowingInformation> getBorrowingInformation(int x) {
		return borrowingImformation.getBorrowingInformation(x);
	}
	/**
	 * 添加图书信息时同步更新该表的信息 即给每本书一个唯一的编号
	 * @param x
	 * @param y
	 */
	public void saveBookBarCode(String x,String y) {
		barCode.saveBookBarCode(x, y);
	}
	//通过图书唯一的编号 返回借阅该书的用户名 用于判断该书是否是该用户所借
	public String  getUserName(int x) {
		return borrowingImformation.getUserName(x);
	}
	public int findBookNumber(String x) {
		return barCode.findBookNumber(x);
	}
}
